/*****************************************
                                led.c
                                zhangtaolei     2016-1-27
******************************************/

/*****************************************
                                include
******************************************/
#include "led.h"
#include "common_def.h"
#include "main.h"
#include "standby.h"
/*****************************************
                                macro
******************************************/

/*****************************************
                                typedef
******************************************/
typedef struct tagLedIf_t
{
	GPIO_TypeDef *port;
	GPIO_Pin_TypeDef pin;
}LedIf_t;
/*****************************************
                                variables
******************************************/
const LedIf_t g_LedIf[] = 
{
	{GPIOC, GPIO_PIN_1},
	{GPIOC, GPIO_PIN_2},
	{GPIOC, GPIO_PIN_3},
	{GPIOC, GPIO_PIN_5},
	{GPIOC, GPIO_PIN_6},
	{GPIOC, GPIO_PIN_7}
};
/*****************************************
                                function
******************************************/
void LedInit(void)
{
	uint8_t i = 0;
	
    for (i = 0; i < DIM(g_LedIf); i++)
   	{
		GPIO_Init(g_LedIf[i].port, g_LedIf[i].pin, GPIO_MODE_OUT_PP_HIGH_FAST);
	}
}

void LedOn(LedIndex_e index)
{
	GPIO_WriteHigh(g_LedIf[index].port,g_LedIf[index].pin);
}

void LedOff(LedIndex_e index)
{
	GPIO_WriteLow(g_LedIf[index].port,g_LedIf[index].pin);
}

void LedReverse(LedIndex_e index)
{
	GPIO_WriteReverse(g_LedIf[index].port,g_LedIf[index].pin);
}

void LedProcess()
{
	if (AP_IsStandby())
	{
		static uint32_t standbyLedTimeInterval = 0;
		if (DetectTimer(&standbyLedTimeInterval, 1000))
		{
			LedReverse(LED11);
		}
	}
	else
	{
		LedOn(LED11);
	}
}
